package com.mmall.service.Impl;

import com.google.common.collect.Lists;
import com.mmall.service.IFileService;
import com.mmall.utils.FTPUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

@Service("iFileService")
@Slf4j
public class FileServiceImpl implements IFileService {

    public String upload(MultipartFile file,String path){
        //获取文件名并获取文件后缀拼接生成新的文件名
        String fileName = file.getOriginalFilename();

        String fileExtensionName = fileName.substring(fileName.lastIndexOf(".")+1);
        String uploadFileName = UUID.randomUUID().toString()+fileExtensionName;
        log.info("开始上传文件,上传文件的文件名:{},上传的路径:{},新文件名:{}",fileName,path,uploadFileName);

        //注意，springMVC的文件上传是上传到tomcat下的文件夹中，上传后再发送到ftp服务器上并删除
        //开始上传到tomcat文件夹下，先判断文件夹是否存在
        File fileDir = new File(path);
        if(!fileDir.exists()){
            //创建文件夹并设置文件夹可写
            fileDir.setWritable(true);
            fileDir.mkdirs();
        }
        //上传文件到tomcat下的相应文件夹
        File targetFile = new File(path,uploadFileName);
        try {
            file.transferTo(targetFile);
            //文件以及上传成功

            FTPUtil.uploadFile(Lists.newArrayList(targetFile));
            //文件上传到FTP服务器上

            //开始删除tomcat服务器上的文件
            targetFile.delete();
        } catch (IOException e) {
            log.error("文件上传异常",e);
            return null;
        }

        //上传成功后返回文件的名字
        return targetFile.getName();
    }

}
